home *** CD-ROM | disk | FTP | other *** search
/ Aminet 24 / Aminet 24 (1998)(GTI - Schatztruhe)[!][Apr 1998].iso / Aminet / biz / swood / FW_MEf_eng.lha / FW_MEf-e / MPaste.fw.long < prev    next >
Text File  |  1998-01-28  |  5KB  |  216 lines

  1. /* ============================================ */
  2. /* This macro will duplicate any selected       */
  3. /* graphic objects. (group or ungroup)          */
  4. /* by Heiko Schröder (Age)                      */
  5. /* $VER: Multiple Paste 1.65 (01/28/98)         */
  6. /* ============================================ */
  7. R='0A'X
  8. Dre=0
  9. Sei=0
  10.  
  11. Address='FinalW'
  12. Options results
  13.  
  14. STATUS PORTNAME
  15. FW = result
  16. address(FW)
  17.  
  18. SIGNAL ON BREAK_C
  19. SIGNAL ON SYNTAX
  20.  
  21. 'ShowMessage 1 0 "Multiple Paste V1.65 - 01/28/98" "© Heiko Schroeder" "E-Mail: age@thepentagon.com" "Okay" "Cancel" ""'
  22. If result=2 then Exit
  23.  
  24. GetDocItemPrefs Decimal
  25. Punkt=Result
  26. If Punkt="Comma" then DocItemPrefs Decimal Period
  27.  
  28. GraphicTool
  29. nr=1
  30. CurrentObject
  31. ObjectId = Result
  32. IF ObjectId=0 THEN do
  33.    'ShowMessage 1 1 "Macro: Multiple Paste" "No graphical object selected..." "" "Abort" "" ""'
  34.    Call BREAK_C
  35. End
  36.  
  37. /*Kontrolle ob ein oder mehrere Objekte ausgewählt sind*/
  38.  
  39. Objekt.0=nr; Objekt.nr=ObjectID
  40. FirstObject Selected
  41. ID=result
  42. Call Zaehlen
  43. Do While 1
  44.    NextObject ID Selected
  45.    ID=result
  46.    If ID=0 then Leave
  47.    Call Zaehlen
  48. End
  49.  
  50. If Objekt.0=1 then do
  51.    gruppe=false
  52. end
  53. else gruppe=true
  54.  
  55. Do a=2 to Objekt.0
  56.    SelectObject Objekt.a MULTIPLE
  57. End
  58. SelectObject Objekt.1 MULTIPLE
  59. /*Ende der Kontrolle*/
  60.  
  61. STATUS View
  62. Zoom=result
  63.  
  64. STATUS Pages
  65. Seiten=result
  66.  
  67. STATUS Page
  68. Seite=result
  69.  
  70. If Gruppe=true then Group
  71.  
  72. Copy
  73. IF RC=0 THEN do
  74.    CurrentObject
  75.    ObjectID=result
  76.    GetObjectCoords ObjectID
  77.    Parse var result Seite x y w h
  78.    wl=w
  79.    hl=h
  80.    GetObjectRotation ObjectID
  81.    Dreh=result
  82.    GetObjectType ObjectID
  83.    Typ=result
  84.  
  85.    If Gruppe=true then Ungroup
  86.  
  87.    'ShowMessage 2 0 "Screen output?" "" "" "normal" "fast" ""'
  88.    ba=result
  89.  
  90.    Do While 1
  91.       Result="ß"
  92.       RequestText '"Multiple Paste" "Number of copies" ""'
  93.       Anzahl=Result
  94.       If Anzahl="ß" then call BREAK_C
  95.       If Anzahl=""|Anzahl=0 then call Ende
  96.       If Datatype(Anzahl,'W')=1 then leave
  97.             else call oops
  98.    End
  99.  
  100.    Do while 1
  101.       Result="ß"
  102.       RequestText '"Multiple Paste" "Horizontal displacement:" ""'
  103.       Hor=Result
  104.       If Hor="ß" then call BREAK_C
  105.       If Hor="" then Hor=0
  106.       If Datatype(Hor,'N')=1 then leave
  107.             else call oops1
  108.    End
  109.  
  110.    Do while 1
  111.       Result="ß"
  112.       RequestText '"Multiple Paste" "Vertical displacement:" ""'
  113.       Ver=Result
  114.       If Ver="ß" then call BREAK_C
  115.       If Ver="" then Ver=0
  116.       If Datatype(Ver,'N')=1 then leave
  117.             else call oops1
  118.    End
  119.  
  120.    Do while 1
  121.       Result="ß"
  122.       RequestText '"Multiple Paste" "Rotation:" ""'
  123.       Dre=Result
  124.       If Dre="ß" then call BREAK_C
  125.       If Dre="" then Dre=0
  126.       If Datatype(Dre,'W')=1 then leave
  127.          else call oops
  128.    End
  129.  
  130.    Do While 1
  131.       Result="ß"
  132.       RequestText '"Multiple Paste" "On which page? 0=selected page" ""'
  133.       Sei=Result
  134.       If Sei="ß" then call BREAK_C
  135.       If Sei=""|Sei=0 then Sei=Seite
  136.       If Datatype(Sei,'W')=1 then leave
  137.          else call oops
  138.    End
  139.  
  140.    If ba=2 then View 400
  141.  
  142.    Do a=1 to (Sei-Seiten)
  143.       InsertPageBreak
  144.    End
  145.       
  146.    Do i=1 TO Anzahl
  147.       Paste
  148.       CurrentObject
  149.       ObjectID=Result
  150.       a=x+(Hor*i)
  151.       b=y+(Ver*i)
  152.       Winkel=Dreh+Dre*i
  153.  
  154.       If Typ=2|Typ=3 then do                     /*Linien*/
  155.          GetPageSetup HEIGHT
  156.          Pagehoehe=result
  157.          w=wl+(Hor*i)
  158.          h=hl+(Ver*i)
  159.          If Sei~=1 then h=h+(sei-1)*Pagehoehe
  160.       End
  161.       SetObjectCoords ObjectID Sei a b w h    /*Probleme bei Linien*/
  162.       SetObjectRotation ObjectID Winkel
  163.       If Gruppe=true then Ungroup
  164.    End
  165. End
  166. If Sei~=Seite then GotoPage Sei
  167.  
  168. Call WH
  169. Redraw
  170. 'ShowMessage 2 1 "Thanks for using." "© Heiko Schröder" "http://yi.com/home/SchroederHeiko" "Click" "" ""'
  171. Exit
  172.  
  173. ENDE:
  174.    Call WH
  175.    'ShowMessage 1 1 "Incorrect number of copies..." "" "" "Abort" "" ""'
  176.    EXIT
  177.  
  178. SYNTAX:
  179.    Call WH
  180.    'ShowMessage 1 1 "There was an error." "Error-identification you can find in »Ram:Error«" "" "Okay" "" ""'
  181.    address "REXX"
  182.    Open("F","Ram:Error","W")
  183.    write ("F", "ATTENTION! FW_MEf V1.65-Error")
  184.    write ("F",'Error in line' SIGL ':' ERRORTEXT(RC))
  185.    write ("F", 'Please report the author. » age@thepentagon.com «')
  186.    Close ("F")
  187. EXIT
  188.  
  189. BREAK_C:
  190.    Call WH
  191.    'ShowMessage 1 1 "You have cancelled..." "© Heiko Schröder" "http://yi.com/home/SchroederHeiko" "Okay" "" ""'
  192.    EXIT
  193.  
  194. WH:
  195.    If ba=2 then do
  196.       View Zoom
  197.       GoToPage Sei
  198.    End
  199.    If Punkt="Comma" then DocItemPrefs DECIMAL Comma
  200. Return
  201.  
  202. Zaehlen:
  203. If ID~=Objekt.1 then do
  204.    nr=nr+1
  205.    Objekt.0=nr; Objekt.nr=ID
  206. End
  207. Return
  208.  
  209. oops:
  210. 'ShowMessage 1 1 "Input error!" "" "" "Okay" "" ""'
  211. return
  212.  
  213. oops1:
  214. 'ShowMessage 1 1 "Input error!" "Please use (.) instead (,)!" "" "Okay" "" ""'
  215. return
  216.